home *** CD-ROM | disk | FTP | other *** search
/ Aminet 19 / Aminet 19 (1997)(GTI - Schatztruhe)[!][Jun 1997].iso / Aminet / gfx / board / rtgmasdev.lha / demos / flamme / flamme.asm < prev    next >
Assembly Source File  |  1997-03-24  |  10KB  |  510 lines

  1.     incdir "include:"
  2.     include "rtgmaster/rtgmaster.i"
  3.     include "rtgmaster/rtgsublibs.i"
  4.     include "rtgmaster/rtgmaster_lib.i"
  5.     include "rtgmaster/rtgc2p.i"
  6.     include "exec/memory.i"
  7.     mc68020
  8. start:
  9.     move.l $4,a6
  10.     movem.l d0-d7/a0-a6,-(sp)
  11.     movem.l (sp)+,d0-d7/a0-a6
  12.     lea rtgname,a1
  13.     moveq #0,d0
  14.     jsr -408(a6)
  15.     move.l d0,rtgbase
  16.     move.l #315392,d0
  17.     move.l #MEMF_FAST+MEMF_CLEAR,d1
  18.     jsr -198(a6)
  19.     move.l d0,flames
  20.     add.l #4096,d0
  21.     move.l d0,new_flames
  22.     add.l #4096,d0
  23.     move.l d0,MapB
  24.     move.l #56,d0
  25.     move.l #MEMF_PUBLIC+MEMF_CLEAR,d1
  26.     jsr -198(a6)
  27.     move.l d0,timereq
  28.     add.l #40,d0
  29.     move.l d0,t1
  30.     add.l #8,d0
  31.     move.l d0,t2
  32.     move.l #$FFFFFFFF,d0
  33.     jsr -330(a6)
  34.     move.l d0,signal
  35.     lea timername,a0
  36.     move.l #2,d0
  37.     move.l timereq,a1
  38.     move.l #0,d1
  39.     jsr -444(a6)
  40.     move.l timereq,a0
  41.     add.l #20,a0
  42.     move.l (a0),timerbase
  43.     move.l rtgbase,a6
  44.     lea srtags,a0
  45.     jsr _LVORtgScreenModeReq(a6)
  46.     move.l d0,smode
  47.     move.l smode,a0
  48.     lea sctags,a1
  49.     jsr _LVOOpenRtgScreen(a6)
  50.     move.l d0,rtgscreen
  51.     move.l rtgscreen,a0
  52.     lea tags,a1
  53.     jsr _LVOGetRtgScreenData(a6)
  54.     cmp.l #grd_PLANAR,pixel
  55.     bne chunky
  56.     move.l rtgscreen,a0
  57.     lea table,a1
  58.     jsr _LVOLoadRGBRtg(a6)
  59.     move.l rtgscreen,a0
  60.     jsr _LVOLockRtgScreen(a6)
  61.     move.l d0,MapA
  62.  
  63. mainloop:
  64.     move.l a6,-(sp)
  65.     move.l timerbase,a6
  66.     move.l t1,a0
  67.     jsr -60(a6)
  68.     move.l (sp)+,a6
  69.     move.l flames,a0
  70.     move.l a0,a1
  71.     add.l #64,a1
  72.     add.l #96,a0
  73.     move #41*16,d0
  74.     sub #1,d0
  75. copyloop1:
  76.     move.w (a0)+,(a1)+
  77.     dbra d0,copyloop1
  78.     move.l a0,a2
  79.     move #3,d1
  80.     add.l #6,a2
  81. puthotspots:
  82.     move.l a2,a0
  83.     move.l #20,d0
  84.     jsr Random
  85.     add.l d0,a0
  86.     move.l #190,d0
  87.     jsr Random2
  88.     move.w d0,(a0)
  89.     dbra d1,puthotspots
  90.     move.w #1,x
  91.     move.w #1,y
  92. flameloop:
  93.     move.l flames,a0
  94.     move.l new_flames,a1
  95.     sub.l d0,d0
  96.     move.w x,d0
  97.     add.l d0,a0
  98.     add.l d0,a1
  99.     sub.l d0,d0
  100.     move.w y,d0
  101.     lsl.w #5,d0
  102.     add.l d0,a0
  103.     add.l d0,a1
  104.     sub.l #1,a0
  105.     sub.l d3,d3
  106.     move.b (a0),d3 ; (x-1/y)
  107.     add.l #2,a0
  108.     add.b (a0),d3 ; (x+1/y)
  109.     sub.l #32,a0
  110.     add.b (a0),d3  ; (x+1/y-1)
  111.     sub.l #1,a0
  112.     add.b (a0),d3  ; (x/y-1)
  113.     sub.l #1,a0
  114.     add.b (a0),d3  ; (x-1/y-1)
  115.     add.l #64,a0
  116.     add.b (a0),d3  ; (x-1/y+1)
  117.     add.l #1,a0
  118.     add.b (a0),d3  ; (x/y+1)
  119.     add.l #1,a0
  120.     add.b (a0),d3  ; (x+1/y+1)
  121.     lsr.b #3,d3
  122.     move.b d3,(a1)
  123.     add.w #1,x
  124.     cmp #32,x
  125.     bne flameloop
  126.     move.w #1,x
  127.     add.w #1,y
  128.     cmp #44,y
  129.     bne flameloop
  130.  
  131.     move.l new_flames,a0
  132.     move.l flames,a1
  133.     move #44,d0
  134.     sub #1,d0
  135. copyloop2:
  136.     move.l (a0)+,(a1)+
  137.     move.l (a0)+,(a1)+
  138.     move.l (a0)+,(a1)+
  139.     move.l (a0)+,(a1)+
  140.     move.l (a0)+,(a1)+
  141.     move.l (a0)+,(a1)+
  142.     move.l (a0)+,(a1)+
  143.     move.l (a0)+,(a1)+
  144.     dbra d0,copyloop2
  145.  
  146. teste:
  147.     sub.l d5,d5
  148.     move.l Width,d6
  149.     move.l d6,d7
  150.     mulu.l #40,d6
  151.     mulu.l Height,d7
  152. plotloopouter:
  153.     move.l #0,d4
  154. plotloop:
  155.     move.l flames,a0
  156.     move.l MapB,a1
  157.     add.l d5,a1
  158.     add d4,a1
  159.     move #39,d2
  160.     add.l #96,a0
  161. plotit:
  162.     move.l (a0)+,(a1)+
  163.     move.l (a0)+,(a1)+
  164.     move.l (a0)+,(a1)+
  165.     move.l (a0)+,(a1)+
  166.     move.l (a0)+,(a1)+
  167.     move.l (a0)+,(a1)+
  168.     move.l (a0)+,(a1)+
  169.     move.l (a0)+,(a1)+
  170.     add.l Width,a1
  171.     sub.l #32,a1
  172.     dbra d2,plotit
  173.     add.l #32,d4
  174.     cmp.l Width,d4
  175.     bls plotloop
  176.     add.l d6,d5
  177.     cmp.l d7,d5
  178.     bls plotloopouter
  179.     move.l ticks,d0
  180.     move.l MapB,a0
  181.     jsr _DrawMeter
  182.     move.l rtgscreen,a0
  183.     move.l MapA,a1
  184.     move.l MapB,a2
  185.     move.l signal,d0
  186.     move.l #0,d1
  187.     move.l #0,d2
  188.     move.l Width,d3
  189.     move.l Height,d4
  190.     move.l #c2p_Selected,d5
  191.     jsr _LVOCallRtgC2P(a6)
  192.     jsr stopclock
  193.     move.l d0,ticks
  194.     btst #6,$bfe001
  195.     bne mainloop
  196.  
  197. exit:
  198.     move.l rtgscreen,a0
  199.     jsr _LVOUnlockRtgScreen(a6)
  200.     move.l rtgscreen,a0
  201.     jsr _LVOCloseRtgScreen(a6)
  202.     move.l smode,a0
  203.     jsr _LVOFreeRtgScreenModeReq(a6)
  204.     move.l rtgbase,a1
  205.     move.l $4,a6
  206.     jsr -414(a6)
  207.     move.l signal,d0
  208.     jsr -336(a6)
  209.     move.l flames,a1
  210.     move.l #315392,d0
  211.     move.l $4,a6
  212.     jsr -210(a6)
  213.     move.l timereq,a1
  214.     jsr -450(a6)
  215.     move.l timereq,a1
  216.     move.l #56,d0
  217.     jsr -210(a6)
  218.     lea text,a0
  219.     add.l #12,a0
  220.     move.l ticks2,d0
  221.     divu.l ticks3,d0
  222.     move.l d0,ticks
  223.     move.l ticks,d0
  224.     divu.l #1000,d0
  225.     move.l d0,d3
  226.     mulu.l #1000,d3
  227.     add.l #'0',d0
  228.     move.l d0,(a0)+
  229.     move.l ticks,d0
  230.     sub.l d3,d0
  231.     divu.l #100,d0
  232.     move.l d0,d1
  233.     mulu.l #100,d1
  234.     add.l #'0',d0
  235.     move.b d0,(a0)+
  236.     move.l ticks,d0
  237.     sub.l d1,d0
  238.     sub.l d3,d0
  239.     divu.l #10,d0
  240.     move.l d0,d2
  241.     mulu.l #10,d2
  242.     add.l #'0',d0
  243.     move.b d0,(a0)+
  244.     move.l ticks,d0
  245.     sub.l d1,d0
  246.     sub.l d2,d0
  247.     sub.l d3,d0
  248.     divu.l #1,d0
  249.     add.l #'0',d0
  250.     move.b d0,(a0)+
  251.     lea dosname,a1
  252.     moveq #0,d0
  253.     jsr -408(a6)
  254.     move.l d0,a6
  255.     jsr -60(a6)
  256.     move.l d0,d1
  257.     move.l d0,d5
  258.     move.l #text,d2
  259.     move.l #texte-text,d3
  260.     jsr -48(a6)
  261.     move.l d5,d1
  262.     move.l #text2,d2
  263.     move.l #texte2-text2,d3
  264.     jsr -48(a6)
  265.     move.l a6,a1
  266.     move.l $4,a6
  267.     jsr -414(a6)
  268.     rts
  269. ticks: dc.l 0
  270. ticks2: dc.l 0
  271. ticks3: dc.l 0
  272. _DrawMeter:
  273.     move.l ticks,d0
  274. dl:
  275.     move.w #$0700,(a0)+
  276.     dbra d0,dl
  277.     rts
  278. stopclock:
  279.     move.l a6,-(sp)
  280.     move.l timerbase,a6
  281.     move.l t2,a0
  282.     jsr -60(a6)
  283.     move.l d0,d1
  284.     move.l t2,a0
  285.     move.l t1,a1
  286.     move.l 4(a0),d0
  287.     sub.l 4(a1),d0
  288.     cmp.l #0,d0
  289.     beq raus
  290.     divu.l d0,d1
  291.     move.l d1,d0
  292.     add.l d0,ticks2
  293.     add.l #1,ticks3
  294. raus:
  295.     move.l (sp)+,a6
  296.     rts
  297. t1: dc.l 0
  298. t2: dc.l 0
  299. timereq: dc.l 0
  300. chunky:
  301.     move.l rtgscreen,a0
  302.     lea tags,a1
  303.     jsr _LVOGetRtgScreenData(a6)
  304.     move.l rtgscreen,a0
  305.     lea table,a1
  306.     jsr _LVOLoadRGBRtg(a6)
  307.     move.l rtgscreen,a0
  308.     jsr _LVOLockRtgScreen(a6)
  309.     move.l d0,MapA
  310. mainloop2:
  311.     move.l a6,-(sp)
  312.     move.l timerbase,a6
  313.     move.l t1,a0
  314.     jsr -60(a6)
  315.     move.l (sp)+,a6
  316.     move.l flames,a0
  317.     move.l a0,a1
  318.     add.l #64,a1
  319.     add.l #96,a0
  320.     move #41*16,d0
  321.     sub #1,d0
  322. copyloop12:
  323.     move.w (a0)+,(a1)+
  324.     dbra d0,copyloop12
  325.     move.l a0,a2
  326.     move #3,d1
  327.     add.l #6,a2
  328. puthotspots2:
  329.     move.l a2,a0
  330.     move.l #20,d0
  331.     jsr Random
  332.     add.l d0,a0
  333.     move.l #190,d0
  334.     jsr Random2
  335.     move.w d0,(a0)
  336.     dbra d1,puthotspots2
  337.     move.w #1,x
  338.     move.w #1,y
  339. flameloop2:
  340.     move.l flames,a0
  341.     move.l new_flames,a1
  342.     sub.l d0,d0
  343.     move.w x,d0
  344.     add.l d0,a0
  345.     add.l d0,a1
  346.     sub.l d0,d0
  347.     move.w y,d0
  348.     lsl.w #5,d0
  349.     add.l d0,a0
  350.     add.l d0,a1
  351.     sub.l #1,a0
  352.     sub.l d3,d3
  353.     move.b (a0),d3 ; (x-1/y)
  354.     add.l #2,a0
  355.     add.b (a0),d3 ; (x+1/y)
  356.     sub.l #32,a0
  357.     add.b (a0),d3  ; (x+1/y-1)
  358.     sub.l #1,a0
  359.     add.b (a0),d3  ; (x/y-1)
  360.     sub.l #1,a0
  361.     add.b (a0),d3  ; (x-1/y-1)
  362.     add.l #64,a0
  363.     add.b (a0),d3  ; (x-1/y+1)
  364.     add.l #1,a0
  365.     add.b (a0),d3  ; (x/y+1)
  366.     add.l #1,a0
  367.     add.b (a0),d3  ; (x+1/y+1)
  368.     lsr.b #3,d3
  369.     move.b d3,(a1)
  370.     add.w #1,x
  371.     cmp #32,x
  372.     bne flameloop2
  373.     move.w #1,x
  374.     add.w #1,y
  375.     cmp #44,y
  376.     bne flameloop2
  377.  
  378.     move.l new_flames,a0
  379.     move.l flames,a1
  380.     move #44,d0
  381.     sub #1,d0
  382. copyloop22:
  383.     move.l (a0)+,(a1)+
  384.     move.l (a0)+,(a1)+
  385.     move.l (a0)+,(a1)+
  386.     move.l (a0)+,(a1)+
  387.     move.l (a0)+,(a1)+
  388.     move.l (a0)+,(a1)+
  389.     move.l (a0)+,(a1)+
  390.     move.l (a0)+,(a1)+
  391.     dbra d0,copyloop22
  392.  
  393. teste2:
  394.     sub.l d5,d5
  395.     move.l Width,d6
  396.     move.l d6,d7
  397.     mulu.l #40,d6
  398.     mulu.l Height,d7
  399. plotloopouter2:
  400.     move.l #0,d4
  401. plotloop2:
  402.     move.l flames,a0
  403.     move.l MapA,a1
  404.     add.l d5,a1
  405.     add d4,a1
  406.     move #39,d2
  407.     add.l #96,a0
  408. plotit2:
  409.     move.l (a0)+,(a1)+
  410.     move.l (a0)+,(a1)+
  411.     move.l (a0)+,(a1)+
  412.     move.l (a0)+,(a1)+
  413.     move.l (a0)+,(a1)+
  414.     move.l (a0)+,(a1)+
  415.     move.l (a0)+,(a1)+
  416.     move.l (a0)+,(a1)+
  417.     add.l Width,a1
  418.     sub.l #32,a1
  419.     dbra d2,plotit2
  420.     add.l #32,d4
  421.     cmp.l Width,d4
  422.     bls plotloop2
  423.     add.l d6,d5
  424.     cmp.l d7,d5
  425.     bls plotloopouter2
  426.     jsr stopclock
  427.     move.l d0,ticks
  428.     move.l MapA,a0
  429.     jsr _DrawMeter
  430.     btst #6,$bfe001
  431.     bne mainloop2
  432.     bra exit
  433. Random:
  434.     clr.l d0
  435.     move.b $dff006,d0
  436.     ext.w d0
  437.     ext.l d0
  438.     and.l #31,d0
  439.     cmp.l #20,d0
  440.     bge Random
  441.     rts
  442. Random2:
  443.     clr.l d0
  444.     move.b $dff006,d0
  445.     ext.w d0
  446.     ext.l d0
  447.     cmp.l #190,d0
  448.     bge Random
  449.     rts
  450. rtgname: dc.b 'rtgmaster.library',0
  451. timername: dc.b 'timer.device',0
  452. dosname: dc.b 'dos.library',0
  453. text: dc.b 'fps value :          ',0
  454. texte:
  455. text2: dc.b 10,13
  456. texte2:
  457.     even
  458. timerbase: dc.l 0
  459. rtgbase:
  460.     dc.l 0
  461. smode:
  462.     dc.l 0
  463. MapA:
  464.     dc.l 0
  465. srtags:
  466.     dc.l smr_MinWidth,320
  467.     dc.l smr_MaxWidth,1024
  468.     dc.l smr_MinHeight,200
  469.     dc.l smr_MaxHeight,768
  470.     dc.l smr_ChunkySupport,512
  471.     dc.l smr_PlanarSupport,-1
  472.     dc.l 0,0
  473. sctags:
  474.     dc.l 0,0
  475. tags:
  476.     dc.l grd_Width
  477. Width:
  478.     dc.l 0
  479.     dc.l grd_Height
  480. Height:
  481.     dc.l 0
  482.     dc.l grd_PixelLayout
  483. pixel:
  484.     dc.l 0,0,0
  485.  
  486. rtgscreen:
  487.     dc.l 0
  488. signal:
  489.     dc.l 0
  490. table:
  491.     dc.w 40,0
  492. tablemain:
  493.     dc.l 0,0,0,$20202020,0,0,$40404040,0,0,$60606060,0,0,$80808080,0,0,$A0A0A0A0,0,0,$C0C0C0C0,0,0,$E0E0E0E0,0,0
  494.     dc.l $F0F0F0F0,0,0,$F0F0F0F0,$10101010,0,$F0F0F0F0,$20202020,0,$F0F0F0F0,$30303030,0,$F0F0F0F0,$40404040,0,$F0F0F0F0,$50505050,0,$F0F0F0F0,$60606060,0,$F0F0F0F0,$70707070,0
  495.     dc.l $F0F0F0F0,$80808080,0,$F0F0F0F0,$90909090,0,$F0F0F0F0,$A0A0A0A0,0,$F0F0F0F0,$B0B0B0B0,0,$F0F0F0F0,$C0C0C0C0,0,$F0F0F0F0,$D0D0D0D0,0,$F0F0F0F0,$E0E0E0E0,0,$F0F0F0F0,$F0F0F0F0,0
  496.     dc.l $F0F0F0F0,$F0F0F0F0,0,$F0F0F0F0,$F0F0F0F0,$10101010,$F0F0F0F0,$F0F0F0F0,$20202020,$F0F0F0F0,$F0F0F0F0,$30303030,$F0F0F0F0,$F0F0F0F0,$40404040,$F0F0F0F0,$F0F0F0F0,$50505050,$F0F0F0F0,$F0F0F0F0,$60606060,$F0F0F0F0,$F0F0F0F0,$70707070
  497.     dc.l $F0F0F0F0,$F0F0F0F0,$80808080,$F0F0F0F0,$F0F0F0F0,$90909090,$F0F0F0F0,$F0F0F0F0,$A0A0A0A0,$F0F0F0F0,$F0F0F0F0,$B0B0B0B0,$F0F0F0F0,$F0F0F0F0,$C0C0C0C0,$F0F0F0F0,$F0F0F0F0,$D0D0D0D0,$F0F0F0F0,$F0F0F0F0,$E0E0E0E0,$F0F0F0F0,$F0F0F0F0,$F0F0F0F0
  498.     dc.w 0
  499. flames: 
  500.     dc.l 0
  501. MapB:
  502.     dc.l 0
  503. new_flames:
  504.     dc.l 0
  505. x:
  506.     dc.w 0
  507. y:
  508.     dc.w 0
  509.     END
  510.